//
//  WLLHomeViewController.swift
//  WLLWeibo
//
//  Created by 王乐乐 on 16/8/9.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
//cell 可重用标识
private let WLLHomeViewCellId = "WLLHomeViewCellId"

class WLLHomeViewController: WLLVisitorViewController {
    
    //创建一个 viewmodel
    private lazy var statusListViewModel:WLLStatusListViewModel = WLLStatusListViewModel()
    //创建刷新控件
    let refreshControl = WLLRefreshControl()
 
    override func viewDidLoad() {
        super.viewDidLoad()
        if !isLogin {
            visitorView?.setupVisitorViewInfo(nil, message: nil)
            // 如果没有登录的话设置未登录信息和logo 也就没有必要再加载数据了 所以return
            return
        }
        
        
        //tableView
        setTableViewInfo()
        
        //加载首页数据
        loadData()
        
    }
    //MARK: - 设置 tableView 的相关信息
    func setTableViewInfo()  {
        
        //注册 cell
        //WARNING:这里一定记得要改成自定义的
        tableView.registerClass(WLLStatusCell.self , forCellReuseIdentifier: WLLHomeViewCellId)
        //设置代理
        tableView.dataSource = self
        tableView.delegate = self
        //         设置行高自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //设置预估行高
        tableView.estimatedRowHeight = 200
        //MARK: - 设置 footerView
        tableView.tableFooterView = activityView
        //添加事件
        refreshControl.addTarget(self, action: "refreshAction", forControlEvents: UIControlEvents.ValueChanged)
        //添加到 tableView 身上
        tableView.addSubview(refreshControl)
        //分割样式
        tableView.separatorStyle = .None
        
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "test", name: "lele", object: nil)
        
    }
    func test () {
        
        loadData()
    }
    
    
    func refreshAction() {
        printLog("下拉请求数据")
        loadData()
    }
    
    
    //MARK: - 懒加载控件
    /// 菊花
    lazy var activityView : UIActivityIndicatorView = {
        let aV = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        aV.color = ThemeColor
        return aV
    }()
    
}
//MARK: - UITableViewDataSource
extension WLLHomeViewController : UITableViewDataSource,UITableViewDelegate{
    
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return statusListViewModel.dataArray.count
        
    }
    
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //        Could not cast value of type 'UITableViewCell' (0x107b2f540) to 'WLLWeibo.WLLStatusCell' (0x105908ac0).
        let cell = tableView.dequeueReusableCellWithIdentifier(WLLHomeViewCellId, forIndexPath: indexPath) as! WLLStatusCell
        cell.statusViewModel  =  statusListViewModel.dataArray[indexPath.row]
        //        //背景随机色
        
        
        return cell
    }
    
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
          // 如果是最后一个cell  而且菊花没有动画
        if indexPath.row+1 == statusListViewModel.dataArray.count && !activityView.isAnimating() {
            printLog(indexPath.row)
            //开启动画
            activityView.startAnimating()
            
            loadData()
        }
        
    }
    
    
}



//MARK: - 请求首页数据
extension WLLHomeViewController{
    func loadData ()  {
        statusListViewModel.loadData(activityView.isAnimating()) { (isSuccess) in
            //无论失败与否都停止动画
            self.endRefreshing()
            if !isSuccess {
                print("请求失败")
                return
            }
            //请求成功
            print("请求成功")
            //刷新 UI
            self.tableView.reloadData()
            
        }
        
        
    }
    //停止动画
    func endRefreshing(){
        self.activityView.stopAnimating()
        self.refreshControl.endRefreshing()
    }
}





